<?php
/**
 * EasySEF - SEF component for Joostina CMS.
 * @author:      Лаборатория сайтов, http://sitelab.net.ru
 * @version:     1.1
 * @release:     2010.01.07
 * @package:     com_sef
 * @copyright:   (C) 2010 http://sitelab.net.ru, , see /administrator/components/com_sef/copyright.php
 * @license:     http://www.gnu.org/copyleft/gpl.html GNU/GPL
 *
 * Cоздан на базе sh404SEF  (C) 2007 by Yannick Gaultier
 *
 * easysef support for com_content component.
 * Copyright Yannick Gaultier (shumisha) - 2007
 * shumisha@gmail.com
 * @version     $Id: com_content.php 229 2008-01-21 19:53:39Z silianacom-svn $
 * {shSourceVersionTag: Version x - 2007-09-20}
 */

defined( '_VALID_MOS' ) or die();

// ------------------  standard plugin initialize function - don't change ---------------------------
global $sh_LANG, $sefConfig;  
$shLangName = '';
$shLangIso = '';
$title = array();
$shItemidString = '';
$dosef = shInitializePlugin( $lang, $shLangName, $shLangIso, $option);
if ($dosef == false) return;
// ------------------  standard plugin initialize function - don't change ---------------------------

// ------------------  load language file - adjust as needed ----------------------------------------
$shLangIso = shLoadPluginLanguage( 'com_content', $shLangIso, '_COM_SEF_SH_CREATE_NEW');
// ------------------  load language file - adjust as needed ----------------------------------------

//$mainframe = mosMainFrame::getInstance();
//$database = $mainframe->getDBO();

// 1.2.4.q this is content item, so let's try to improve missing Itemid handling
// retrieve section id to know whether this static or not
$shHomePageFlag = false;

if ((empty($Itemid) || ($Itemid == 99999999)) && !empty($task) && ($task == 'view') ) {
	if (empty($sectionid)) {
		$query = 'SELECT sectionid from #__content WHERE id = '.$id;
		$database->setQuery($query);
		$shSectionId = $database->loadResult();
	} else $shSectionId = $sectionid;
//echo '$shSectionId = '.$shSectionId.'<br />';  
	// retrieve Itemid
	if (empty($mainframe)) { // V 1.2.4.t ! bug #122
		$shMainFrame = new mosMainFrame( $database, $option, '.' );
	} else $shMainFrame = $mainframe;
	if ( !empty($shSectionId) ) {  // has section, so regular content !!! we need to cache this !!
		$shItemid = $shMainFrame->getItemid( $id, 0, 1);
		//echo 'shItemid getitemid = '.$shItemid.'<br />';
	} else {  // does not have section, so static
		// V 1.2.4.t better use Joomla built in function !
		$shItemid = $shMainFrame->getItemid( $id, 1, 1);
//echo 'shItemid selec id = '.$shItemid.'<br />';
	}
	// V 1.2.4.q last possibility : content item is only displayed through com_frontpage
	if (empty($shItemid)) {
		$query = 'SELECT count(content_id) from #__content_frontpage WHERE content_id = '.$id;
		$database->setQuery($query);
		$isOnFrontPage = $database->loadResult();
		if (!empty($isOnFrontPage)) {  // it is on frontpage, let's find out about com_frontpage Itemid
			$query = 'SELECT id,link FROM #__menu WHERE link LIKE "%com_frontpage%"'; // we don't mind if it's not published
			//$database->setQuery($query, 0, 1);
			$database->setQuery($query);  // 10/08/2007 22:12:40 mambo compat
			$database->loadObject($shComFrontpage);
			if (!empty($shComFrontpage)) {      // if on frontpage, let's see if com_frontpage
				global $shHomeLink;               //is actually frontpage
				if (strpos($shHomeLink, 'com_frontpage') === false) {
					if (!shIsMultilingual() || shIsDefaultLang( $shLangName))
						$string = '';
					else $string = $shLangIso;
					$shHomePageFlag = true;
				} else
					$shItemid =  $shComFrontpage->id;  // content is in com_frontpage, but com_frontpage is not home

			}
		}
	}
	// integrate found Itemid
	if (!empty($shItemid)) {
		$string .= '&Itemid='.$shItemid;
		;  // append current Itemid
		$Itemid = $shItemid;
		shAddToGETVarsList('Itemid', $Itemid); // V 1.2.4.m
	}
}  

$shHomePageFlag = !$shHomePageFlag ? shIsHomepage ($string): $shHomePageFlag;

if (!$shHomePageFlag) {  // we may have found that this is homepage, so we msut return an empty string
// do something about that Itemid thing
	if (eregi('Itemid=[0-9]+', $string) === false) { // if no Itemid in non-sef URL
		// V 1.2.4.t moved back here
		if ($sefConfig->shInsertGlobalItemidIfNone && !empty($shCurrentItemid)) {
			$string .= '&Itemid='.$shCurrentItemid;
			;  // append current Itemid
			$Itemid = $shCurrentItemid;
			shAddToGETVarsList('Itemid', $Itemid); // V 1.2.4.m
		}

		if ($sefConfig->shInsertTitleIfNoItemid)
			$title[] = $sefConfig->shDefaultMenuItemName ?
					$sefConfig->shDefaultMenuItemName : getMenuTitle($option, (isset($task) ? @$task : null), $shCurrentItemid, null, $shLangName );  // V 1.2.4.q added forced language
		$shItemidString = '';
		if ($sefConfig->shAlwaysInsertItemid && (!empty($Itemid) || !empty($shCurrentItemid)))
			$shItemidString = _COM_SEF_SH_ALWAYS_INSERT_ITEMID_PREFIX.$sefConfig->replacement
					.(empty($Itemid)? $shCurrentItemid :$Itemid);
	} else {  // if Itemid in non-sef URL
		$shItemidString = $sefConfig->shAlwaysInsertItemid ?
				_COM_SEF_SH_ALWAYS_INSERT_ITEMID_PREFIX.$sefConfig->replacement.$Itemid
				: '';
		if ($sefConfig->shAlwaysInsertMenuTitle) {
			//global $Itemid; V 1.2.4.g we want the string option, not current page !
			if ($sefConfig->shDefaultMenuItemName)
				$title[] = $sefConfig->shDefaultMenuItemName;// V 1.2.4.q added force language
			elseif ($menuTitle = getMenuTitle($option, (isset($task) ? @$task : null), $Itemid, '',$shLangName )) {
				//echo 'Menutitle = '.$menuTitle.'<br />';
				if ($menuTitle != '/') $title[] = $menuTitle;
			}
		}
	}
// V 1.2.4.m 
	shRemoveFromGETVarsList('option');
	shRemoveFromGETVarsList('lang');
	if (!empty($Itemid))
		shRemoveFromGETVarsList('Itemid');
	if (!empty($limit))
		shRemoveFromGETVarsList('limit');
	if (isset($limitstart))
		shRemoveFromGETVarsList('limitstart');

	$task = isset($task) ? @$task : null;
	switch ($task) {
		case 'archivecategory':
		case 'archivesection' :
			$dosef = false;
			break;
		
		case 'new' :
			$title[] = $sh_LANG[$shLangIso]['_COM_SEF_SH_CREATE_NEW'];
			if (!empty($sectionid)) {
				$q = 'SELECT id, title FROM #__sections WHERE id = '.$sectionid;
				$database->setQuery($q);
				if (shTranslateUrl($option, $shLangName)) // V 1.2.4.m
					$database->loadObject( $sectionTitle);
				else $database->loadObject( $sectionTitle, false);
				if ($sectionTitle) {
					$title[] = $sectionTitle->title;
					shRemoveFromGETVarsList('sectionid');
				}
			}
			shRemoveFromGETVarsList('task');
			break;

		case 'user_content' :
			$cur_section = new mosSection($database);
			$cur_section->load($section);
			$title[] = $cur_section->name;

			$title[] = 'users';

			$current_user = new mosUser( $database );
			$current_user->load($id);
			$title[] = $current_user->username;

			shRemoveFromGETVarsList('section');
			shRemoveFromGETVarsList('task');
			shRemoveFromGETVarsList('id');
			shRemoveFromGETVarsList('task');
			break;			
			
		default:
		// V 1.2.4.j 2007/04/11 : numerical ID, on some categories only
			if ($sefConfig->shInsertNumericalId && isset($sefConfig->shInsertNumericalIdCatList)
					&& !empty($id) && ($task == 'view')) {

				$q = 'SELECT id, catid, created FROM #__content WHERE id = '.$id;
				$database->setQuery($q);
				if (shTranslateUrl($option, $shLangName)) // V 1.2.4.m
					$database->loadObject( $contentElement);
				else $database->loadObject( $contentElement, false);
				if ($contentElement) {
					$foundCat = array_search($contentElement->catid, $sefConfig->shInsertNumericalIdCatList);
					if (($foundCat !== null && $foundCat !== false)	|| ($sefConfig->shInsertNumericalIdCatList[0] == '')) { // test both in case PHP < 4.2.0
						$shTemp = explode(' ', $contentElement->created);
						$title[] = str_replace('-','', $shTemp[0]).$contentElement->id;
					}
				}
			}

			// V 1.2.4.k 2007/04/25 : if activated, insert edition id and name from iJoomla magazine
			if (!empty($ed) && $sefConfig->shActivateIJoomlaMagInContent && $id && ($task == 'view')) {
				$q = 'SELECT id, title FROM #__magazine_categories WHERE id = '.$ed;
				$database->setQuery($q);
				if (shTranslateUrl($option, $shLangName)) // V 1.2.4.m
					$database->loadObject( $issueName, false);
				else $database->loadObject( $issueName);
				if ($issueName) {
					$title[] = ($sefConfig->shInsertIJoomlaMagIssueId ? $ed.$sefConfig->replacement:'')
							.$issueName->title;
				}
				shRemoveFromGETVarsList('ed');
			}
			// end of edition id insertion
			//$shTemp = sef_404::getContentTitles($task,$id, $Itemid, $shLangName);
			//echo '<br />getContentTitle in com_content<br />';
			//var_dump($shTemp);
			//echo '<br />Title<br />';
			//var_dump($title);
			//echo '<br />';
			if (!empty($title))
			// V 1.2.4.m : we now pass Itemid to getContentTitles(), so as to be able to find menu item name
			// if blogcategory with several categories (because we don't know which category name to use)
				$title = array_merge($title, sef_404::getContentTitles($task,$id, (isset($Itemid) ? @$Itemid : null), $shLangName)); // V 1.2.4.q added forced language
			else {
				$id = isset( $id ) ? $id : 0;
				$title = sef_404::getContentTitles($task,$id,(isset($Itemid) ? @$Itemid : null), $shLangName); // V 1.2.4.q added forced language
			}

			// V 1.2.4.q
			shRemoveFromGETVarsList('task');
			if (isset($id))
				shRemoveFromGETVarsList('id');
			if (!empty($sectionid))
				shRemoveFromGETVarsList('sectionid');  // V 1.2.4.m
			if (!empty($catid))
				shRemoveFromGETVarsList('catid');   // V 1.2.4.m
	}

// ------------------  standard plugin finalize function - don't change ---------------------------  
	if ($dosef) {
		$string = shFinalizePlugin( $string, $title, $shAppendString, $shItemidString,
				(isset($limit) ? @$limit : null), (isset($limitstart) ? @$limitstart : null),
				(isset($shLangName) ? @$shLangName : null));
	}
// ------------------  standard plugin finalize function - don't change ---------------------------
} else { // this is multipage homepage
	$title[] = '/';
	$string = sef_404::sefGetLocation( $string, $title, null, (isset($limit) ? @$limit : null), (isset($limitstart) ? @$limitstart : null), (isset($shLangName) ? @$shLangName : null));
}  
?>
